package exception;
/**
 * finally块
 * finally是异常处理机制的最后一块，它可以直接跟在try块后面，也可以跟在最后一个catch块后面
 * 例如:
 * try{
 *     ...
 * }finally{
 *
 * }
 *
 * 还可以
 * try{
 *     ....
 * }catch(AAAException e){
 *
 * }catch(BBBException e){
 *
 * }finally{
 *
 * }
 *
 *
 * finally的特点:
 * 只要程序执行到try语句块中，无论try中的代码是否出现异常，finally最后都必定执行
 *
 * 因此，我们通常将释放资源这类工作放在finally中确保执行，例如IO操作完毕后的close

 * 特点 ：只要程序执行到try的语句块种那么无论try中的代码是否出现错误，finally中的代码都会被执行
 * 因此 我们通常将释放资源这一类的代码放在finally中
 *
 */
public class FinallyDemo {
    public static void main(String[] args) {
        System.out.println("程序开始执行");
        try {
            String str = "null";
//            String str2 = null;
            System.out.println(str.length());
            System.out.println(str.charAt(5));
            return;        //> **提前结束当前方法的执行，返回到调用者。**
                          //也就是说，它不会返回任何值（因为返回类型是 `void`），只是让程序退出当前方法，不再执行后续代码。
        }catch (Exception e){
            System.out.println("出现了异常");
        }finally {                              //不管try语句块怎么变，finally都会被执行，不会因为return的影响不执行
            System.out.println("程序结束了");
        }


    }
}
